package one.stand.service;

import one.stand.entity.excel.CustomerExcelEntity;
import one.stand.model.ResultModel;
import one.stand.request.CustomerRequest;
import one.stand.request.InputDealMoneyRequest;
import one.stand.response.CustomerResponse;
import one.stand.util.ExportDataDTO;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */
public interface CustomerService {

    /**
     * 存为客户
     *
     * @param request
     * @return
     */
    ResultModel<Boolean> addCustomer(CustomerRequest request);

    /**
     * 手动创建客户
     * @return
     */
    ResultModel<Boolean> manualAdd(CustomerRequest request);

    /**
     * 手动创建客户
     * @return
     */
    ResultModel<Boolean> manualAdd2(CustomerRequest request);

    /**
     * 获取客户列表
     * @param request
     * @return
     */
    ResultModel<List<CustomerResponse>> getCustomer(CustomerRequest request, boolean fal);

    /**
     * 获取客户列表
     * @param request
     * @return
     */
    ResultModel<Map<String, Object>> getCustomerPC(CustomerRequest request);

    /**
     * 导出获取客户列表
     * @param request
     * @return
     */
    ResultModel<ExportDataDTO<CustomerExcelEntity>> getCustomerExport(CustomerRequest request);

    /**
     * 获取员工的客户列
     * @param request
     * @return
     */
    ResultModel selectCustomerList(CustomerRequest request);

    /**
     * 客户类型分组统计
     * @param request
     * @return
     */
    ResultModel<List<CustomerResponse>> countCustomer(CustomerRequest request);

    /**
     * 修改客户
     * @return
     */
    ResultModel<Boolean> updCustomer(CustomerRequest request);

    /**
     * 录入成交金额
     * @return
     */
    ResultModel inputDealMoney(InputDealMoneyRequest request);

    /**
     * 修改客户类型
     * @param request
     * @return
     */
    ResultModel<Boolean> updCustomerState(CustomerRequest request);

    /**
     * 修改客户类型
     * @param request
     * @return
     */
    ResultModel<Boolean> updBatchCustomerState(CustomerRequest request);

    /**
     * 修改客户标签
     * @param request
     * @return
     */
    ResultModel<Boolean> updCustomerLabel(CustomerRequest request);

    /**
     * 下拉框客户列表
     * @param request
     * @return
     */
    ResultModel<List<CustomerResponse>> getCustomerList(CustomerRequest request);
}
